namespace taurus.client {

    /**
     * TObject interface.
     */
    export interface ITObject {

        /**
         * The contains key.
         * @param key 
         */
        containsKey(key: string): boolean;
        /**
         * get bool of key.
         */
        getBool(key: string): boolean;
        /**
         * get byte of key
         * @param key 
         */
        getByte(key: string): number;
        /**
         * get byte array of key.
         * @param key 
         */
        getByteArray(key: string): Uint8Array;
        /**
         * get TDataWrapper of key.
         * @param key 
         */
        get(key: string): TDataWrapper;
        /**
         * get double of key.
         * @param key 
         */
        getDouble(key: string): number;
        /**
         * get float of key.
         * @param key 
         */
        getFloat(key: string): number;
        /**
         * get int of key
         * @param key 
         */
        getInt(key: string): number;
        /**
         * get all keys.
         */
        getKeys(): string[];
        /**
         * get long of key.
         * @param key 
         */
        getLong(key: string): number;
        /**
         * get TArray of key.
         * @param key 
         */
        getTArray(key: string): ITArray;
        /**
         * get TObject of key.
         * @param key 
         */
        getTObject(key: string): ITObject;
        /**
         * get short of key.
         * @param key 
         */
        getShort(key: string): number;
        /**
         * get string of key.
         * @param key 
         */
        getString(key: string): string;
        /**
         * Check null object of key.
         * @param key 
         */
        isNull(key: string): boolean;
        /**
         * put TDataWrapper to key.
         * @param key 
         * @param val 
         */
        put(key: string, val: TDataWrapper);
        /**
         * put bool to key.
         * @param key 
         * @param val 
         */
        putBool(key: string, val: boolean);
        /**
         * put byte to key.
         * @param key 
         * @param val 
         */
        putByte(key: string, val: number);
        /**
         * put byte array to key.
         * @param key 
         * @param val 
         */
        putByteArray(key: string, val: Uint8Array);
        /**
         * put double to key.
         * @param key 
         * @param val 
         */
        putDouble(key: string, val: number);
        /**
         * put float to key.
         * @param key 
         * @param val 
         */
        putFloat(key: string, val: number);
        /**
         * put int to key.
         * @param key 
         * @param val 
         */
        putInt(key: string, val: number);
        /**
         * put long to key.
         * @param key 
         * @param val 
         */
        putLong(key: string, val: number);
        /**
         * put null object to key.
         * @param key 
         */
        putNull(key: string);
        /**
         * put TArray to key.
         * @param key 
         * @param val 
         */
        putTArray(key: string, val: ITArray);
        /**
         * put TObject to key.
         * @param key 
         * @param val 
         */
        putTObject(key: string, val: ITObject);
        /**
         * put short to key.
         * @param key 
         * @param val 
         */
        putShort(key: string, val: number);
        /**
         * put string to key.
         * @param key 
         * @param val 
         */
        putString(key: string, val: string);
        /**
         * Remove objecy of key.
         * @param key 
         */
        del(key: string);
        /**
         * get size.
         */
        size(): number;
        /**
         * The to byte array.
         */
        toBinary(): ByteArray;

        /**
        * The to byte array.
        */
        toJson(): string;
    }
}